package untitled.src.com.mtwo.work.three;


public class WorkThreeTest {

    public static void main(String[] args) {


        //声明CardType引用类型对象并获取大卡类型
        CardType cardType = CardType.BIG;
        //System.out.println(cardType.getCardType());
        //声明父类引用类型对象，调用子类类型
        AbstractPackages abstractPackages1 = new CallPlan();
        //声明父类引用类型对象，调用子类类型，并赋值
        AbstractPackages abstractPackages2 = new MobilePhoneCard(1.2, cardType.getCardType(), 123444, "张飞", "19929299nnn", 60.4, 8);
        //double traffic, String cardType, int cardNumber, String name, String passwd, double money, int time
        System.out.println();
        System.out.println("**********调用CallPlan类中的showPhoneService**********");
        //使用强制转换类型调用CallOlan中特有的showPhoneService方法
        ((CallPlan) abstractPackages1).showPhoneService(1, (MobilePhoneCard) abstractPackages2);
        AbstractPackages abstractPackages3 = new Unlimited();
        System.out.println();
        System.out.println("**********调用Unlimited类中的showInternetService**********");
        //使用强制转换类型调用Unlimited中特有的showInternetService方法
        ((Unlimited) abstractPackages3).showInternetService(3, (MobilePhoneCard) abstractPackages2);
        AbstractPackages abstractPackages4 = new UserConsumptionInformation();
        System.out.println();
        System.out.println("-----调用MobilePhoneCard中的show方法------");
        //调用MobilePhoneCard中的show方法;
        abstractPackages2.show();
        //声明父类引用类型对象，调用子类类型,并赋值
        AbstractPackages abstractPackages5 = new CallPlan(30, 39, 2);
        System.out.println();
        System.out.println("-----调用CallPlan中的show方法------");
        //调用CallPlan中的show方法;
        abstractPackages5.show();
        //声明父类引用类型对象，调用子类类型,并赋值
        AbstractPackages abstractPackages6 = new Unlimited(8.8, 3);
        System.out.println();
        System.out.println("-----调用Unlimited中的show方法------");
        //调用Unlimited中的show方法;
        abstractPackages6.show();
        //
        //AbstractPackages abstractPackages7=new UserConsumptionInformation();
        System.out.println();
        System.out.println("-----调用UserConsumptionInformation中的show方法------");
        //声明父类引用类型对象，调用子类类型
        AbstractPackages abstractPackages7 = new UserConsumptionInformation();
        for (int i = 0; i < 2; i++) {
            //调用setTime给time通话时长赋值
            abstractPackages7.setTime(2);
            //调用setCharges给charges每月资费赋值
            abstractPackages7.setCharges(5);
            //调用setTraffic给traffic流量赋值
            abstractPackages7.setTraffic(4.4);
            System.out.println("第" + (i + 1) + "次情况/详情：");
            abstractPackages7.show();
        }
    }

}
